package com.xbongbong.saas.model;

import com.xbongbong.paas.toolbox.helper.PageHelper;
import com.xbongbong.saas.domain.entity.SignInEntity;

import java.util.List;
import java.util.Map;

/**
 * @author haibin.zhang
 * @version v1.0
 * @date 2019/4/1 13:50
 * @since v1.0
 */
public interface SignInModel {

    /**
     * 保存
     *
     * @param signInEntity 实体
     * @return Integer
     * @author GuoJun.HU
     * @date 2019/4/19 11:02
     * @since V1.0
     */
    Integer save(SignInEntity signInEntity);

    /**
     * 删除
     *
     * @param key 签到Id
     * @return Integer
     * @author xubin
     * @date 2020/5/21 15:31
     * @since V1.0
     */
    Integer delete(Long key, String corpid);

    /**
     * 查询列表
     *
     * @param map 查询参数
     * @return List
     * @author GuoJun.HU
     * @date 2019/4/19 11:02
     * @since V1.0
     */
    List<SignInEntity> findEntities(Map<String, Object> map);

    /**
     * 获取数量
     *
     * @param map 查询参数
     * @return Integer
     * @author GuoJun.HU
     * @date 2019/4/19 11:02
     * @since V1.0
     */
    Integer getEntitysCount(Map<String, Object> map);

    /**
     * 统计
     *
     * @param map 查询参数
     * @param pageHelper 分页信息
     * @return List
     * @author GuoJun.HU
     * @date 2019/4/19 11:02
     * @since V1.0
     * @update 2019/6/18 by zcp 重写签到统计
     */
    List<Map<String, Object>> getStatistic(Map<String, Object> map, PageHelper pageHelper);

    /**
     * 获取签到人数
     * @param param
     * @return java.lang.Integer
     * @author zcp
     * @date 2019/6/18 15:45
     * @since v1.0
     * @version v1.0
     */
    Integer getUserCount(Map<String, Object> param);

    /**
     * 通过id获取实体
     *
     * @param id     主键
     * @param corpid 公司id
     * @return SignInEntity
     * @author GuoJun.HU
     * @date 2019/4/19 11:06
     * @since V1.0
     */
    SignInEntity getByKey(Long id, String corpid);
    /**
     * Description: 客户一致性同步
     * @param corpid
     * @param customerId
     * @param customerName
     * @author 魏荣杰
     * @date 2019/6/12 9:54
     * @since v1.0
     */
    void dataConsistencyUpdateCustomer(String corpid, Long customerId, String customerName);

    Integer dataConsistencyUpdateUser(String corpId, String userId, String userName);

    /**
     * 批量更新签到数据
     *
     * @param list
     * @param corpid
     * @throws
     * @return
     * @author hongxiao
     * @date 2020-11-13 16:25
     * @since
     * @version
     */
    void updateBatch(List<SignInEntity> list, String corpid);
}
